home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Fixation 1.3 / graphics.cpp < prev    next >
Text File  |  1996-02-12  |  3KB  |  122 lines

  1. // graphics.c
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <QDOffscreen.h>
  6.  
  7. #include "mytypes.h"
  8. #include "error.h"
  9.  
  10. #include "graphutil.h"
  11. #include "fastmap.h"
  12. #include "graphics.h"
  13. #include "window.h"
  14. #include "blit.h"
  15.  
  16. enum {
  17.     kBaseFastmapID = 128,
  18.     kBaseGWorldID = 500
  19. };
  20.  
  21. frameData frameCounts[kmaxpix] =   // frames, masked
  22. {
  23. {6, true},
  24. {6, true},
  25. {6, true},
  26. {6, true},
  27. {6, true},
  28. {6, true},
  29. {6, true},
  30. {6, true}
  31. };
  32.  
  33. RGBColor rgbBlack = {0,0,0};
  34. RGBColor bugcol = {0xC000,0xC000,0xC000};
  35.  
  36. Rect blockrect[kmaxpix], blockrectworld[kmaxgworlds];
  37. Rect boffrect;
  38. Fastmap *bpix[kmaxpix][kmaxframes];
  39. GWorldPtr bworld[kmaxgworlds];
  40. GWorldPtr bmask[kmaxgworlds];
  41. GWorldPtr boff;
  42. GDHandle maindev;
  43.  
  44.  
  45. static void
  46. alignseedz(void)
  47. {
  48.     long *seedptr, *srcseed;
  49.     
  50.     if (gGameWindDepth != 8)
  51.         return;
  52.         
  53.     srcseed = &((**(**(**maindev).gdPMap).pmTable).ctSeed);
  54.     seedptr = &((**(**boff->portPixMap).pmTable).ctSeed);
  55.  
  56. //    if (pgGameWindDepth == 8)
  57. //        if (*srcseed != *seedptr) {
  58.  
  59.     *seedptr = *srcseed;    // for fast quickdraw
  60.     seedptr = &((**(**boff->portPixMap).pmTable).ctSeed);
  61.     *seedptr = *srcseed;    // for fast quickdraw
  62. }
  63.  
  64. void LoadAllGraphics(void)
  65. {
  66.     int i, j;
  67.     CTabHandle dacolors;
  68.     GDHandle            SaveGD;
  69.     CGrafPtr            SavePort;
  70.     
  71.     GetGWorld(&SavePort, &SaveGD);
  72.  
  73.     qd.randSeed = TickCount();
  74.         // just in case . . .
  75.     for (i=0;i<kmaxgworlds;i++)
  76.         bworld[i] = 0;
  77.     for (i=0;i<kmaxpix;i++)
  78.         for (j=0;j<kmaxframes;j++)
  79.             bpix[i][j] = 0;
  80.     
  81. //    if (gGameWindDepth == 8)
  82. //        dacolors = (CTabHandle) colorTab;
  83. //    else
  84.         dacolors = 0;
  85.  
  86.     GetPixFromResources(kBaseGWorldID, kmaxgworlds, blockrectworld, bworld, bmask, dacolors);
  87.     verify(bworld[0]);
  88.  
  89.     SetRect(&boffrect, 0, 0, kBoardSize, kBoardSize);
  90.     makegworld(&boff, &boffrect, 8, dacolors);
  91.     SetGWorld(boff, nil);
  92.     TextSize(10);
  93.     TextFont(geneva);
  94. //    TextMode(srcBic);
  95.     
  96.     LoadFastmaps(kBaseFastmapID, kmaxpix, frameCounts, blockrect, (Fastmap **) bpix, kmaxframes);
  97.     
  98. //    back2boff();
  99.         
  100.             // if necessary we convert all pixmaps into the depth of the gamewindow
  101.     if (gGameWindDepth != 8)
  102.         for (i=0;i<kmaxgworlds;i++) {
  103.             GWorldPtr tempgw;
  104.             
  105.             if (!bworld[i])
  106.                 continue;
  107.             makegworld(&tempgw, &blockrectworld[i], gGameWindDepth, 0);
  108.             if (!tempgw) {
  109.                 DebugStr("\pFailure to load graphics.");
  110.                 continue;
  111.             }
  112.             SetGWorld(tempgw, nil);
  113.             CopyBits ((BitMap *) *(bworld[i]->portPixMap), (BitMap *) *(tempgw->portPixMap), 
  114.                 &blockrectworld[i], &blockrectworld[i], srcCopy, nil);
  115.             UnlockPixels(bworld[i]->portPixMap);
  116.             DisposeGWorld(bworld[i]);
  117.             bworld[i] = tempgw;
  118.             tempgw = 0;
  119.         }
  120.     
  121.     SetGWorld(SavePort, SaveGD);    // restore original world (save the Earth)
  122. }